import tkinter as tk

# 公共变量 
g = []
# 休眠排序
def sleep_sort(arr):
    # 数组的长度
    l = len(arr)
    for num in arr:
        # 定时调用函数和参数
        if num >= 0:
            root.after(1 * num,lambda n=num:arr_r(n,l))
        else:
            root.after(-1 * num,lambda n=num:arr_l(n,l))


def arr_r(n,l):
    global g
    g.append(n)
    if(len(g)>=l):
        output.config(text=g)

def arr_l(n,l):
    global g
    g.insert(0,n)
    if(len(g)>=l):
        output.config(text=g)

# 开始
def send():
    # 初始化数组
    global g
    g = []
    input_str = entry.get()
    try:
        # 强制转整数或者浮点
        arr = [int(x) for x in input_str.split()]
        sleep_sort(arr)
    except ValueError:
        output.config(text='请输入有效的整数数组')


root = tk.Tk()
root.title("休眠排序")

entry = tk.Entry(root)
entry.insert(0,'1 3 2 5 61 17 9')
entry.pack()

tk.Button(root, text="休眠排序", command=send).pack()

output = tk.Label(root)
output.pack()

root.mainloop()